package com.qianda.qdminiapp.common.exception;

/**
 * @ClassName SimpleException
 * @Author cw
 * @Date 2019/8/6 15:01
 * @Version 1.0
 */
public class SimpleException extends RuntimeException{

    private static final long serialVersionUID = 1L;

    /** The error code */
    private final ExceptionCode errorCode;

    /** The arguments to be replaced message template */
    private String[] args;

    /**
     * 创建异常
     *
     * @param errorCode 错误码对象
     */
    public SimpleException(ExceptionCode errorCode) {
        super(errorCode.message());
        this.errorCode = errorCode;
    }

    /**
     * 创建异常
     *
     * @param errorCode 错误码对象
     * @param cause 原始异常
     */
    public SimpleException(ExceptionCode errorCode, Throwable cause) {
        super(errorCode.message(), cause);
        this.errorCode = errorCode;
    }

    /**
     * 创建异常
     *
     * @param errorCode 错误码对象
     * @param args 参数数组
     */
    public SimpleException(ExceptionCode errorCode, String[] args) {
        super(errorCode.message());
        this.errorCode = errorCode;
        this.args = args;
    }

    /**
     * 创建异常
     *
     * @param errorCode 错误码对象
     * @param cause 原始异常
     * @param args 参数数组
     */
    public SimpleException(ExceptionCode errorCode, Throwable cause, String[] args) {
        super(errorCode.message(), cause);
        this.errorCode = errorCode;
        this.args = args;
    }

    /**
     * 返回错误码对象
     *
     * @return 错误码对象
     */
    public ExceptionCode code() { return this.errorCode; }

    /**
     * 返回参数数组
     *
     * @return 参数数组
     */
    public String[] args() { return this.args; }
}
